using System;

using DesertedRoadStudios.BlogNetNuke.Common;

namespace DesertedRoadStudios.BlogNetNuke.Components
{
    #region Friendly URLs
    /// <summary>
    /// BlogNetNuke Friendly URL class
    /// </summary>
    public class FriendlyURL
    {
        #region Private Members
        private int _pathID;
        private string _path;
        #endregion

        #region Constructors
        /// <summary>
        /// empty cstor
        /// </summary>
        public FriendlyURL()
        {
        }
        #endregion

        #region Properties
        public int PathID
        {
            get { return _pathID; }
            set { _pathID = value; }
        }

        public string Path
        {
            get { return _path; }
            set { _path = value; }
        }
        #endregion
    }

    #endregion
    
    #region BlogTab Class
    /// <summary>
    /// BlogNetNuke Blog Instance Class
    /// </summary>
    public class BlogTab
    {
        #region Private Members
        private int _blogID;
        private int _portalID;
        private int _tabID;
        private string _tabPath;
        private int _moduleID;
        #endregion

        #region Constructors
        /// <summary>
        /// empty cstor
        /// </summary>
        public BlogTab()
        {
        }
        #endregion

        #region Properties
        public int BlogID
        {
            get { return _blogID; }
            set { _blogID = value; }
        }

        public int PortalID
        {
            get { return _portalID; }
            set { _portalID = value; }
        }

        public int TabID
        {
            get { return _tabID; }
            set { _tabID = value; }
        }

        public string TabPath
        {
            get { return _tabPath; }
            set { _tabPath = value; }
        }

        public int ModuleID
        {
            get { return _moduleID; }
            set { _moduleID = value; }
        }
        #endregion
    }
    #endregion
    
    #region PostInfo Class
    /// <summary>
    /// BlogNetNuke Post Class
    /// </summary>
    public class PostInfo
    {
        #region Private Members
        private Guid _postID;
        private string _postTitle; 
        private string _slug;
        private string _content;
        private string _excerpt;
        private bool _allowComments;
        private PostStatus _status;
        private DateTime _publishedDate;
        private string _postPath;
        private string _keywords;
        private string _description;
        private int _authorID;
        private int _portalID;
        private int _tabID;
        private string _tabPath;
        private int _moduleID;
        private int _totalComments;
        #endregion

        #region Constructors
        /// <summary>
        /// emptry cstor
        /// </summary>
        public PostInfo()
        {
        }
        #endregion

        #region Properties
        public Guid PostID
        {
            get { return _postID; }
            set { _postID = value; }
        }

        public string PostTitle
        {
            get { return _postTitle; }
            set { _postTitle = value; }
        }

        public string Slug
        {
            get { return _slug; }
            set { _slug = value; }
        }

        public string Content
        {
            get { return _content; }
            set { _content = value; }
        }

        public string Excerpt
        {
            get { return _excerpt; }
            set { _excerpt = value; }
        }

        public bool AllowComments
        {
            get { return _allowComments; }
            set { _allowComments = value; }
        }

        public PostStatus Status
        {
            get { return _status; }
            set { _status = value; }
        }

        public DateTime PublishedDate
        {
            get { return _publishedDate; }
            set { _publishedDate = value; }
        }

        public string PostPath
        {
            get { return _postPath; }
            set { _postPath = value; }
        }

        public string Keywords
        {
            get { return _keywords; }
            set { _keywords = value; }
        }

        public string Description
        {
            get { return _description; }
            set { _description = value; }
        }

        public int AuthorID
        {
            get { return _authorID; }
            set { _authorID = value; }
        }

        public int PortalID
        {
            get { return _portalID; }
            set { _portalID = value; }
        }

        public int TabID
        {
            get { return _tabID; }
            set { _tabID = value; }
        }

        public string TabPath
        {
            get { return _tabPath; }
            set { _tabPath = value; }
        }

        public int ModuleID
        {
            get { return _moduleID; }
            set { _moduleID = value; }
        }

        public int TotalComments
        {
            get { return _totalComments; }
            set { _totalComments = value; }
        }
        #endregion

        #region Public Members
        public void CopyTo(PostInfo target)
        {
            target._allowComments = _allowComments;
            target._authorID = _authorID;
            target._content = _content;
            target._description = _description;
            target._excerpt = _excerpt;
            target._keywords = _keywords;
            target._moduleID = _moduleID;
            target._portalID = _portalID;
            target._postID = _postID;
            target._postPath = _postPath;
            target._postTitle = _postTitle;
            target._publishedDate = _publishedDate;
            target._slug = _slug;
            target._status = _status;
            target._tabID = _tabID;
            target._tabPath = _tabPath;
            target._totalComments = _totalComments;
        }
        #endregion

    }
    #endregion

    #region CommentInfo Class
    /// <summary>
    /// BlogNetNuke Comment Class
    /// </summary>
    public class CommentInfo
    {
        #region Private Members
        private Guid _commentID;
        private int _portalID;
        private int _moduleID;
        private Guid _postID;
        private string _commentTitle;
        private int _authorID;
        private string _authorName;
        private string _email;
        private string _ipAddress;
        private string _url;
        private DateTime _commentDate;
        private string _comments;
        private bool _isApproved;
        private bool _isDeleted;
        #endregion

        #region Constructors
        /// <summary>
        /// emptry cstor
        /// </summary>
        public CommentInfo()
        {
        }
        #endregion

        #region Properties
        public Guid CommentID
        {
            get { return _commentID; }
            set { _commentID = value; }
        }

        public int PortalID
        {
            get { return _portalID; }
            set { _portalID = value; }
        }

        public int ModuleID
        {
            get { return _moduleID; }
            set { _moduleID = value; }
        }

        public Guid PostID
        {
            get { return _postID; }
            set { _postID = value; }
        }

        public string CommentTitle
        {
            get { return _commentTitle; }
            set { _commentTitle = value; }
        }

        public int AuthorID
        {
            get { return _authorID; }
            set { _authorID = value; }
        }

        public string AuthorName
        {
            get { return _authorName; }
            set { _authorName = value; }
        }

        public string Email
        {
            get { return _email; }
            set { _email = value; }
        }

        public string IPAddress
        {
            get { return _ipAddress; }
            set { _ipAddress = value; }
        }

        public string URL
        {
            get { return _url; }
            set { _url = value; }
        }

        public DateTime CommentDate
        {
            get { return _commentDate; }
            set { _commentDate = value; }
        }

        public string Comments
        {
            get { return _comments; }
            set { _comments = value; }
        }

        public bool IsApproved
        {
            get { return _isApproved; }
            set { _isApproved = value; }
        }

        public bool IsDeleted
        {
            get { return _isDeleted; }
            set { _isDeleted = value; }
        }
        #endregion
    }

    #endregion

    #region Category Class
    /// <summary>
    /// BlogNetNuke Category Class
    /// </summary>
    public class CategoryInfo
    {
        #region Private Members
        private int _categoryID;
        private string _category;
        private string _slug;
        private int _parentID;
        private int _portalID;
        private int _moduleID;
        private string _keywords;
        private string _description;
        #endregion

        #region Constructors
        /// <summary>
        /// empty cstor
        /// </summary>
        public CategoryInfo()
        {
        }
        #endregion

        #region Properties
        public int CategoryID
        {
            get { return _categoryID; }
            set { _categoryID = value; }
        }

        public string Category
        {
            get { return _category; }
            set { _category = value; }
        }

        public string Slug
        {
            get { return _slug; }
            set { _slug = value; }
        }

        public int ParentID
        {
            get { return _parentID; }
            set { _parentID = value; }
        }

        public int PortalID
        {
            get { return _portalID; }
            set { _portalID = value; }
        }

        public int ModuleID
        {
            get { return _moduleID; }
            set { _moduleID = value; }
        }

        public string Keywords
        {
            get { return _keywords; }
            set { _keywords = value; }
        }

        public string Description
        {
            get { return _description; }
            set { _description = value; }
        }

        #endregion
    }
    #endregion

    #region PostsCategories Class
    /// <summary>
    /// BlogNetNuke Instance Class for the PostsCategories View
    /// </summary>
    public class PostsCategories
    {
        #region Private Members
        private Guid _postID;
        private int _categoryID;
        private string _category;
        private string _slug;
        private int _parentID;
        private int _portalID;
        private int _moduleID;
        private string _keywords;
        private string _description;
        #endregion

        #region Constructors
        /// <summary>
        /// empty cstor
        /// </summary>
        public PostsCategories()
        {
        }
        #endregion

        #region Properties
        public Guid PostID
        {
            get { return _postID; }
            set { _postID = value; }
        }

        public int CategoryID
        {
            get { return _categoryID; }
            set { _categoryID = value; }
        }

        public string Category
        {
            get { return _category; }
            set { _category = value; }
        }

        public string Slug
        {
            get { return _slug; }
            set { _slug = value; }
        }

        public int ParentID
        {
            get { return _parentID; }
            set { _parentID = value; }
        }

        public int PortalID
        {
            get { return _portalID; }
            set { _portalID = value; }
        }

        public int ModuleID
        {
            get { return _moduleID; }
            set { _moduleID = value; }
        }

        public string Keywords
        {
            get { return _keywords; }
            set { _keywords = value; }
        }

        public string Description
        {
            get { return _description; }
            set { _description = value; }
        }

        #endregion
    }
    #endregion

    #region Tag Class
    /// <summary>
    /// BlogNetNuke Tag Class
    /// </summary>
    public class TagInfo
    {
        #region Private Members
        private int _tagID;
        private string _tag;
        private string _slug;
        private int _portalID;
        private int _moduleID;
        #endregion

        #region Constructors
        /// <summary>
        /// empty cstor
        /// </summary>
        public TagInfo()
        {
        }
        #endregion

        #region Properties
        public int TagID
        {
            get { return _tagID; }
            set { _tagID = value; }
        }

        public string Tag
        {
            get { return _tag; }
            set { _tag = value; }
        }

        public string Slug
        {
            get { return _slug; }
            set { _slug = value; }
        }

        public int PortalID
        {
            get { return _portalID; }
            set { _portalID = value; }
        }

        public int ModuleID
        {
            get { return _moduleID; }
            set { _moduleID = value; }
        }

        #endregion
    }
    #endregion

    #region PostsTags Class
    /// <summary>
    /// BlogNetNuke Instance Class for the PostsTagsView
    /// </summary>
    public class PostsTags
    {
        #region Private Members
        private Guid _postID;
        private int _tagID;
        private string _tag;
        private string _slug;
        private int _portalID;
        private int _moduleID;
        #endregion

        #region Constructors
        /// <summary>
        /// empty cstor
        /// </summary>
        public PostsTags()
        {
        }
        #endregion

        #region Properties
        public Guid PostID
        {
            get { return _postID; }
            set { _postID = value; }
        }

        public int TagID
        {
            get { return _tagID; }
            set { _tagID = value; }
        }

        public string Tag
        {
            get { return _tag; }
            set { _tag = value; }
        }

        public string Slug
        {
            get { return _slug; }
            set { _slug = value; }
        }

        public int PortalID
        {
            get { return _portalID; }
            set { _portalID = value; }
        }

        public int ModuleID
        {
            get { return _moduleID; }
            set { _moduleID = value; }
        }

        #endregion
    }
    #endregion

    #region TinyURL Class
    /// <summary>
    /// BlogNetNuke TinyURL Class
    /// </summary>
    public class TinyURLInfo
    {
        #region Private Members
        private int _blogID;
        private int _portalID;
        private int _moduleID;
        private int _tabID;
        private string _tabPath;
        private int _urlID;
        private string _domainName;
        private bool _logRedirects;
        private int _redirectID;
        private string _code;
        private Guid _postID;
        private string _postTitle;
        private int _status;
        private DateTime _publishedDate;
        private string _postPath;
        #endregion

        #region Constructors
        /// <summary>
        /// empty cstor
        /// </summary>
        public TinyURLInfo()
        {
        }
        #endregion

        #region Properties
        public int BlogID
        {
            get
            {
                return _blogID;
            }
            set
            {
                _blogID = value;
            }
        }

        public int PortalID
        {
            get
            {
                return _portalID;
            }
            set
            {
                _portalID = value;
            }
        }

        public int ModuleID
        {
            get
            {
                return _moduleID;
            }
            set
            {
                _moduleID = value;
            }
        }

        public int TabID
        {
            get
            {
                return _tabID;
            }
            set
            {
                _tabID = value;
            }
        }

        public string TabPath
        {
            get
            {
                return _tabPath;
            }
            set
            {
                _tabPath = value;
            }
        }

        public int URLID
        {
            get
            {
                return _urlID;
            }
            set
            {
                _urlID = value;
            }
        }

        public string DomainName
        {
            get
            {
                return _domainName;
            }
            set
            {
                _domainName = value;
            }
        }

        public bool LogRedirects
        {
            get
            {
                return _logRedirects;
            }
            set
            {
                _logRedirects = value;
            }
        }

        public int RedirectID
        {
            get
            {
                return _redirectID;
            }
            set
            {
                _redirectID = value;
            }
        }

        public string Code
        {
            get
            {
                return _code;
            }
            set
            {
                _code = value;
            }
        }

        public Guid PostID
        {
            get
            {
                return _postID;
            }
            set
            {
                _postID = value;
            }
        }

        public string PostTitle
        {
            get
            {
                return _postTitle;
            }
            set
            {
                _postTitle = value;
            }
        }

        public int Status
        {
            get
            {
                return _status;
            }
            set
            {
                _status = value;
            }
        }

        public DateTime PublishedDate
        {
            get
            {
                return _publishedDate;
            }
            set
            {
                _publishedDate = value;
            }
        }

        public string PostPath
        {
            get
            {
                return _postPath;
            }
            set
            {
                _postPath = value;
            }
        }
        #endregion
    }
    #endregion
}
